Clustered computer systems are often deployed to improve performance and/or availability over that provided by a single computer, and are often more cost-effective than single computers of comparable speed or availability.
For example, a database cluster may comprise a number of database servers which together make up a complete database system. The individual servers may be referred to as nodes. A number of different types of database cluster exist, such as, a shared disk cluster (also called a shared everything cluster) and a shared nothing cluster. In a shared disk or shared everything cluster, a number of nodes have access to all the data on a shared set of disks. In a shared nothing cluster, each node is independent and self sufficient. Each node has access to its own subset of the data. In a shared nothing cluster, queries may need to be split, distributed to all nodes and combined afterwards.
In database clusters such as shared nothing clusters, nodes may need to be added or removed depending on system resources. The size of a shared nothing cluster is a parameter which is closely related to the CPU load on the cluster. Resource requirements may change over time. As resource requirements change, restructuring of the nodes may be required. In the event that a bottleneck is reached, new nodes are manually added. The restructuring of a clustered database is a task manually undertaken by a system administrator. Additionally, the restructuring of a clustered database may have an impact on the availability of the database and result in an amount of downtime for the database system.